package com.beiing.tianshuai.tianshuai.network;

import com.beiing.tianshuai.tianshuai.app.HttpRequestConstant;
import com.beiing.tianshuai.tianshuai.entity.ActiveReplyBean;
import com.beiing.tianshuai.tianshuai.entity.ActivitiesApplyForResultBean;
import com.beiing.tianshuai.tianshuai.entity.ActivitiesPublishBean;
import com.beiing.tianshuai.tianshuai.entity.AddFriendsBean;
import com.beiing.tianshuai.tianshuai.entity.CodeBean;
import com.beiing.tianshuai.tianshuai.entity.CommonBean;
import com.beiing.tianshuai.tianshuai.entity.ConsumeMarksBean;
import com.beiing.tianshuai.tianshuai.entity.CreateGroupBean;
import com.beiing.tianshuai.tianshuai.entity.DiscoveryCommentBean;
import com.beiing.tianshuai.tianshuai.entity.DiscoveryCommentListBean;
import com.beiing.tianshuai.tianshuai.entity.DiscoveryDetailsBean;
import com.beiing.tianshuai.tianshuai.entity.DiscoveryIsPraiseBean;
import com.beiing.tianshuai.tianshuai.entity.DiscoveryPraiseBean;
import com.beiing.tianshuai.tianshuai.entity.DynamicAddRelayCommentBean;
import com.beiing.tianshuai.tianshuai.entity.DynamicAddReplyBean;
import com.beiing.tianshuai.tianshuai.entity.DynamicAllMessageBean;
import com.beiing.tianshuai.tianshuai.entity.DynamicBean;
import com.beiing.tianshuai.tianshuai.entity.DynamicCollectBean;
import com.beiing.tianshuai.tianshuai.entity.DynamicCommentBean;
import com.beiing.tianshuai.tianshuai.entity.DynamicCommentNoticeBean;
import com.beiing.tianshuai.tianshuai.entity.DynamicDeleteBean;
import com.beiing.tianshuai.tianshuai.entity.DynamicDetailBean;
import com.beiing.tianshuai.tianshuai.entity.DynamicForwardBean;
import com.beiing.tianshuai.tianshuai.entity.DynamicPraiseBean;
import com.beiing.tianshuai.tianshuai.entity.DynamicPraiseNoticeBean;
import com.beiing.tianshuai.tianshuai.entity.DynamicPublishBean;
import com.beiing.tianshuai.tianshuai.entity.DynamicPublishImageBean;
import com.beiing.tianshuai.tianshuai.entity.DynamicRelayDetailBean;
import com.beiing.tianshuai.tianshuai.entity.DynamicShieldBean;
import com.beiing.tianshuai.tianshuai.entity.ETicketBean;
import com.beiing.tianshuai.tianshuai.entity.EventTypesBean;
import com.beiing.tianshuai.tianshuai.entity.FeedBackBean;
import com.beiing.tianshuai.tianshuai.entity.FollowBean;
import com.beiing.tianshuai.tianshuai.entity.FollowResultBean;
import com.beiing.tianshuai.tianshuai.entity.FreshBannerImgBean;
import com.beiing.tianshuai.tianshuai.entity.FreshNewsListBean;
import com.beiing.tianshuai.tianshuai.entity.GroupDetailsBean;
import com.beiing.tianshuai.tianshuai.entity.HomeBean;
import com.beiing.tianshuai.tianshuai.entity.HuoDongCollectBean;
import com.beiing.tianshuai.tianshuai.entity.HuoDongCommentBean;
import com.beiing.tianshuai.tianshuai.entity.HuoDongDetailBean;
import com.beiing.tianshuai.tianshuai.entity.HuoDongItemBean;
import com.beiing.tianshuai.tianshuai.entity.HuoDongPraiseBean;
import com.beiing.tianshuai.tianshuai.entity.IdentificationInfoBean;
import com.beiing.tianshuai.tianshuai.entity.IdentificationStatusBean;
import com.beiing.tianshuai.tianshuai.entity.IndexSearchListBean;
import com.beiing.tianshuai.tianshuai.entity.IsBindingBean;
import com.beiing.tianshuai.tianshuai.entity.ListUserBean;
import com.beiing.tianshuai.tianshuai.entity.LoginBean;
import com.beiing.tianshuai.tianshuai.entity.MyAttentionBean;
import com.beiing.tianshuai.tianshuai.entity.MyCollectionBean;
import com.beiing.tianshuai.tianshuai.entity.MyDiscoveryBean;
import com.beiing.tianshuai.tianshuai.entity.MyFriendListBean;
import com.beiing.tianshuai.tianshuai.entity.MyGroupsBean;
import com.beiing.tianshuai.tianshuai.entity.MyInterestVideoBean;
import com.beiing.tianshuai.tianshuai.entity.MyOrderBean;
import com.beiing.tianshuai.tianshuai.entity.NewFriendMessageBean;
import com.beiing.tianshuai.tianshuai.entity.NoticeMarksBean;
import com.beiing.tianshuai.tianshuai.entity.PersonalAttentionBean;
import com.beiing.tianshuai.tianshuai.entity.PersonalAuditBean;
import com.beiing.tianshuai.tianshuai.entity.PersonalDataCardBean;
import com.beiing.tianshuai.tianshuai.entity.PersonalInfoBean;
import com.beiing.tianshuai.tianshuai.entity.PersonalPublishBean;
import com.beiing.tianshuai.tianshuai.entity.RecommendActivityInfoBean;
import com.beiing.tianshuai.tianshuai.entity.ReportResultBean;
import com.beiing.tianshuai.tianshuai.entity.SearchFriendBean;
import com.beiing.tianshuai.tianshuai.entity.SplashBean;
import com.beiing.tianshuai.tianshuai.entity.TopSearchAndClassificationBean;
import com.beiing.tianshuai.tianshuai.entity.UpdatePersonalInfoBean;
import com.beiing.tianshuai.tianshuai.entity.VersionInfoBean;
import com.beiing.tianshuai.tianshuai.interest.entity.InterestBean;
import com.beiing.tianshuai.tianshuai.interest.entity.InterestCategoriesBean;
import com.beiing.tianshuai.tianshuai.interest.entity.InterestVideoDetailBean;
import com.beiing.tianshuai.tianshuai.mine.entity.BindingBean;
import com.beiing.tianshuai.tianshuai.mine.entity.MineOrderDataBean;
import com.beiing.tianshuai.tianshuai.mine.entity.OrderApplyAfterSaleBean;
import com.beiing.tianshuai.tianshuai.mine.entity.OrderApplyAfterSalePostDataBean;
import com.beiing.tianshuai.tianshuai.mine.entity.OrderCommentDataBean;
import com.beiing.tianshuai.tianshuai.mine.entity.OrderDeleteBean;
import com.beiing.tianshuai.tianshuai.mine.entity.OrderExtendTransportBean;
import com.beiing.tianshuai.tianshuai.mine.entity.OrderRefundCancelBean;
import com.beiing.tianshuai.tianshuai.mine.entity.OrderRefundStateDataBean;
import com.beiing.tianshuai.tianshuai.mine.entity.OrderTransportDataBean;
import com.beiing.tianshuai.tianshuai.mine.entity.OrderUserAddressDataBean;
import com.beiing.tianshuai.tianshuai.mine.entity.OrderUserAddressDefaultDataBean;
import com.beiing.tianshuai.tianshuai.mine.entity.OrderUserAddressDeleteDataBean;
import com.beiing.tianshuai.tianshuai.mine.entity.OrderUserAddressEditDataBean;
import com.beiing.tianshuai.tianshuai.wxapi.bean.WeChatBean;
import com.beiing.tianshuai.tianshuai.wxapi.bean.WeChatUserInfoBean;

import io.reactivex.Observable;
import okhttp3.RequestBody;
import okhttp3.ResponseBody;
import retrofit2.http.Body;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Path;
import retrofit2.http.Query;
import retrofit2.http.Url;

import static com.beiing.tianshuai.tianshuai.app.HttpRequestConstant.REQUEST_INTEREST_ADD_REPLY;

/**
 * Created by Jinni on 2017/7/12 0012.
 */

interface RetrofitService {

    /**
     * 获取活动分类
     *
     * @param id 活动id
     * @return 请求结果
     */
    @GET("ActiveApp/type/id/{id}")
    Observable<EventTypesBean> getEventTypes(@Path("id") String id);

    /**
     * 活动---活动列表
     *
     * @param id
     * @param firstRow
     * @param listRows
     * @return
     */
    @POST("Active/app_type/app/9e304d4e8df1b74cfa009913198428ab")
    Observable<HuoDongItemBean> getHuoDongItem(
            @Query("id") String id,
            @Query("firstRow") int firstRow,
            @Query("listRows") int listRows);

    /**
     * 活动---------全部活动
     *
     * @param firstRow
     * @param listRows
     * @return
     */
    @GET("ActiveApp/wholeActive")
    Observable<HuoDongItemBean> getAllHuoDong(
            @Query("firstRow") int firstRow,
            @Query("listRows") int listRows
    );

    /**
     * 活动---------活动详情
     *
     * @param uid
     * @param id
     * @return
     */
    @FormUrlEncoded
    @POST("Active/part/app/9e304d4e8df1b74cfa009913198428ab")
    Observable<HuoDongDetailBean> getHuoDongDetail(
            @Field("userid") String uid,
            @Field("id") String id
    );

    /**
     * 活动 添加评论
     *
     * @param aid     活动id
     * @param uid     用户id
     * @param content 评论内容
     * @param addTime 评论时间
     * @return 返回结果
     */
    @FormUrlEncoded
    @POST("Comment/add_comment/app/9e304d4e8df1b74cfa009913198428ab")
    Observable<HuoDongCommentBean> getHuoDongCommentResult(
            @Field("aid") String aid,
            @Field("uid") String uid,
            @Field("content") String content,
            @Field("add_time") String addTime
    );

    /**
     * 活动-----------删除评论
     *
     * @param id 评论id
     * @return result
     */
    @FormUrlEncoded
    @POST("ActiveApp/activeCommentDel")
    Observable<CodeBean> getActiveCommentDelResult(
            @Field("id") String id
    );

    /**
     * 活动---------------添加回复
     *
     * @param aid     活动id
     * @param cid     评论id
     * @param form_id 回复人id
     * @param to_uid  被回复人id
     * @param content 回复内容
     * @param comment 原评论内容
     * @param type    回复评论还是回复回复
     * @param rid     回复的id
     * @return ActiveReplyBean
     */
    @FormUrlEncoded
    @POST("Comment/addReply")
    Observable<ActiveReplyBean> getActiveReplyResult(
            @Field("aid") String aid,
            @Field("cid") String cid,
            @Field("form_uid") String form_id,
            @Field("to_uid") String to_uid,
            @Field("content") String content,
            @Field("comment") String comment,
            @Field("type") int type,
            @Field("rid") String rid
    );

    //活动---删除回复
    @FormUrlEncoded
    @POST("Comment/ReplyDel")
    Observable<DynamicDeleteBean> getActiveReplyDeleteResult(
            @Field("aid") String aid,
            @Field("id") String id,
            @Field("uid") String uid
    );

    //活动---回复点赞
    @FormUrlEncoded
    @POST("ActiveApp/addCommentReplyThing")
    Observable<HuoDongPraiseBean> getActiveReplyPraiseResult(
            @Field("uid") String uid,
            @Field("aid") String aid,
            @Field("cid") String cid,
            @Field("rid") String rid,
            @Field("to_uid") String to_uid
    );

    /**
     * 活动--------收藏
     *
     * @param uid
     * @param aid
     * @return
     */
    @FormUrlEncoded
    @POST("CollectApp/add_active")
    Observable<HuoDongCollectBean> getHuoDongCollectResult(
            @Field("uid") String uid,
            @Field("aid") String aid
    );

    /**
     * 活动点赞
     *
     * @param userid 用户id
     * @param aid    活动id
     * @return
     */
    @FormUrlEncoded
    @POST("Thing/thing/app/9e304d4e8df1b74cfa009913198428ab")
    Observable<HuoDongPraiseBean> getHuoDongPraiseResult(
            @Field("userid") String userid,
            @Field("aid") String aid
    );

    /**
     * 活动评论的点赞
     *
     * @param uid 用户id
     * @param cid 评论id
     * @return
     */
    @FormUrlEncoded
    @POST("ActiveApp/addCommentThing")
    Observable<HuoDongPraiseBean> getActiveCommentPraiseResult(
            @Field("uid") String uid,
            @Field("cid") String cid
    );

    /**
     * 新鲜事---轮播图
     */
    @GET("FreshApp/picture")
    Observable<FreshBannerImgBean> getFreshBannerImg(
            @Query("num") int num
    );

    /**
     * 新鲜事---新鲜事列表
     *
     * @param page
     * @param num
     * @param picnum
     * @return
     */
    @FormUrlEncoded
    @POST("FreshApp/freshapp_list")
    Observable<FreshNewsListBean> getFreshNewsList(
            @Query("userid") String userid,
            @Field("page") int page,
            @Field("num") int num,
            @Field("picnum") int picnum
    );

    /**
     * 新鲜事-----新鲜事详情
     *
     * @param f_id
     * @return
     */
    @FormUrlEncoded
    @POST("FreshApp/freshapp_details")
    Observable<DiscoveryDetailsBean> getDiscoveryDetails(
            @Field("f_id") String f_id
    );

    /**
     * 新鲜事---------发布评论
     *
     * @param u_id
     * @param f_id
     * @param review
     * @return
     */
    @FormUrlEncoded
    @POST("FreshApp/review")
    Observable<DiscoveryCommentBean> getDiscoveryCommentResult(
            @Field("u_id") String u_id,
            @Field("f_id") String f_id,
            @Field("review") String review
    );

    /**
     * 新鲜事---------查看评论
     *
     * @param f_id 新鲜事id
     * @param page 展示评论页数
     * @param num  每页展示数量
     * @param type 查询排序：0--时间倒序  1--时间正序  2--热门倒序
     * @return code200 成功，返回评论结果
     */
    @FormUrlEncoded
    @POST("FreshApp/show_review")
    Observable<DiscoveryCommentListBean> getDiscoveryCommentList(
            @Field("f_id") String f_id,
            @Field("page") int page,
            @Field("num") int num,
            @Field("type") int type
    );

    /**
     * 新鲜事--------删除评论
     *
     * @param id 评论id
     * @return code 200成功
     */
    @FormUrlEncoded
    @POST("FreshApp/freshCommentDel")
    Observable<CodeBean> getDiscoveryCommentDelResult(
            @Field("id") String id
    );

    //发现-------添加回复
    @FormUrlEncoded
    @POST("FreshApp/addReply")
    Observable<ActiveReplyBean> getDiscoveryReplyResult(
            @Field("fid") String fid,
            @Field("cid") String cid,
            @Field("form_uid") String form_uid,
            @Field("to_uid") String to_uif,
            @Field("content") String content,
            @Field("comment") String comment,
            @Field("type") int type,
            @Field("rid") String rid
    );

    //发现---------删除回复
    @FormUrlEncoded
    @POST("FreshApp/ReplyDel")
    Observable<DynamicDeleteBean> getDiscoveryReplyDeleteResult(
            @Field("fid") String fid,
            @Field("id") String id,
            @Field("uid") String uid
    );

    //发现-----------回复点赞
    @FormUrlEncoded
    @POST("FreshApp/addFreshPraise")
    Observable<DiscoveryPraiseBean> getDiscoveryReplyPraiseResult(
            @Field("fid") String fid,
            @Field("cid") String cid,
            @Field("rid") String rid,
            @Field("uid") String uid,
            @Field("to_uid") String to_uid
    );

    /**
     * 新鲜事-------判断用户是否点赞
     *
     * @param u_id
     * @param f_id
     * @return
     */
    @FormUrlEncoded
    @POST("FreshApp/is_praise")
    Observable<DiscoveryIsPraiseBean> getDiscoveryIsPraiseResult(
            @Field("u_id") String u_id,
            @Field("f_id") String f_id
    );

    /**
     * 新鲜事------------点赞
     *
     * @param u_id
     * @param f_id
     * @return
     */
    @FormUrlEncoded
    @POST("FreshApp/praise")
    Observable<DiscoveryPraiseBean> getDiscoveryPraiseResult(
            @Field("u_id") String u_id,
            @Field("f_id") String f_id
    );

    /**
     * 发现-----------评论点赞
     *
     * @param f_id
     * @param u_id
     * @param c_id
     * @return
     */
    @FormUrlEncoded
    @POST("FreshApp/commentPraise")
    Observable<DiscoveryPraiseBean> getDiscoveryCommentPraiseResult(
            @Field("f_id") String f_id,
            @Field("u_id") String u_id,
            @Field("c_id") String c_id
    );

    /**
     * 动态-----发布文字动态
     *
     * @param uid
     * @param content
     * @param registration_id
     * @return
     */
    @FormUrlEncoded
    @POST("DynamicsApp/add_dynamics")
    Observable<DynamicPublishBean> getDynamicPublishId(
            @Field("uid") String uid,
            @Field("content") String content,
            @Field("registration_id") String registration_id,
            @Field("type") String type
    );
   @POST(HttpRequestConstant.REQUEST_DYNAMIC_PUBLISH)
    Observable<DynamicPublishBean> setDynamicPublishIdDataBean(@Body RequestBody body);

    /**
     * 动态------发布图片动态
     *
     * @param body
     * @return
     */
    @POST("DynamicsApp/add_pic")
    Observable<ResponseBody> getDynamicPublishResult(
            @Body RequestBody body
    );
    @POST(HttpRequestConstant.REQUEST_DYNAMIC_PUBLISH_IMAGE)
    Observable<DynamicPublishImageBean> setDynamicPublishImageDataBean(@Body RequestBody body);

    /**
     * 动态------点赞
     *
     * @param userid
     * @param aid
     * @return
     */
    @FormUrlEncoded
    @POST("DynamicsApp/thing")
    Observable<DynamicPraiseBean> getDynamicPraiseResult(
            @Field("userid") String userid,
            @Field("aid") String aid,
            @Field("to_uid") String to_uid
    );

    /**
     * 动态--------转发点赞
     *
     * @param uid
     * @param rid
     * @param did 原动态id
     * @return
     */
    @FormUrlEncoded
    @POST("RelayApp/addRelayThing")
    Observable<DynamicPraiseBean> getRelayPraiseResult(
            @Field("uid") String uid,
            @Field("rid") String rid,
            @Field("did") String did,
            @Field("to_uid") String to_uid
    );

    /**
     * 动态--------屏蔽动态
     *
     * @param uid
     * @param did
     * @return
     */
    @FormUrlEncoded
    @POST("Shield/addShield")
    Observable<DynamicShieldBean> getShieldResult(
            @Field("uid") String uid,
            @Field("did") String did
    );

    /**
     * 动态--------收藏动态
     *
     * @param uid
     * @param did
     * @return
     */
    @FormUrlEncoded
    @POST("CollectApp/add_dynamics")
    Observable<DynamicCollectBean> getDynamicCollectResult(
            @Field("uid") String uid,
            @Field("did") String did
    );

    /**
     * 动态--------删除动态
     *
     * @param uid
     * @param did
     * @return
     */
    @FormUrlEncoded
    @POST("DynamicsApp/dynamicsDel")
    Observable<CommonBean> getDynamicDeleteResult(
            @Field("uid") String uid,
            @Field("did") String did
    );

    /**
     * 动态---------删除转发
     *
     * @param uid
     * @param rid
     * @return
     */
    @FormUrlEncoded
    @POST("RelayApp/relayDel")
    Observable<CommonBean> getRelayDelResult(
            @Field("uid") String uid,
            @Field("rid") String rid
    );

    /**
     * 动态---------转发
     *
     * @param from_uid 转发人
     * @param to_uid   被转发人
     * @param r_id     动态id
     * @param content  转发内容
     * @return
     */
    @FormUrlEncoded
    @POST("RelayApp/addRelay")
    Observable<DynamicForwardBean> getForwardResult(
            @Field("form_uid") String from_uid,
            @Field("to_uid") String to_uid,
            @Field("r_id") String r_id,
            @Field("content") String content
    );

    /**
     * 动态-------详情
     *
     * @param uid 用户id
     * @param id  动态id
     * @return
     */
    @FormUrlEncoded
    @POST("DynamicsApp/dynamics_use")
    Observable<DynamicDetailBean> getDynamicDetail(
            @Field("uid") String uid,
            @Field("id") String id,
            @Field("type") int type,
            @Field("page") int page,
            @Field("num") int num
    );

    /**
     * 动态----转发----详情
     *
     * @param id  转发动态id
     * @param uid 用户id
     * @return
     */
    @FormUrlEncoded
    @POST("DynamicsApp/dynamicsRelayUse")
    Observable<DynamicRelayDetailBean> getDynamicRelayDetail(
            @Field("id") String id,
            @Field("uid") String uid,
            @Field("type") int type,
            @Field("page") int page,
            @Field("num") int num
    );

    /**
     * 动态----转发----评论
     *
     * @param rid     转发动态id
     * @param uid     用户id
     * @param did     原动态id
     * @param content 评论内容
     * @return
     */
    @FormUrlEncoded
    @POST("RelayApp/addRelayComment")
    Observable<DynamicAddRelayCommentBean> getAddRelayCommentResult(
            @Field("rid") String rid,
            @Field("uid") String uid,
            @Field("did") String did,
            @Field("to_uid") String to_uid,
            @Field("content") String content
    );

    /**
     * 动态----转发----回复评论
     *
     * @param rid             转发动态id
     * @param cid             评论id
     * @param form_uid        回复人id
     * @param to_uid          被回复人id
     * @param content         回复内容
     * @param registration_id 推送标识
     * @return
     */
    @FormUrlEncoded
    @POST("RelayApp/addReply")
    Observable<DynamicAddReplyBean> getAddRelayReplyResult(
            @Field("rid") String rid,
            @Field("cid") String cid,
            @Field("form_uid") String form_uid,
            @Field("to_uid") String to_uid,
            @Field("content") String content,
            @Field("registration_id") String registration_id
    );

    /**
     * 动态-------发布评论
     *
     * @param uid         用户id
     * @param aid         动态id
     * @param content     动态评论
     * @param create_time 评论时间
     * @return
     */
    @FormUrlEncoded
    @POST("DynamicsApp/add_comment")
    Observable<DynamicCommentBean> getDynamicCommentResult(
            @Field("uid") String uid,
            @Field("to_uid") String to_uid,
            @Field("aid") String aid,
            @Field("content") String content,
            @Field("registration_id") String register_id,
            @Field("create_time") String create_time
    );

    /**
     * 动态---------删除评论
     *
     * @param uid
     * @param id
     * @param did
     * @return
     */
    @GET("DynamicsApp/CommentDel")
    Observable<DynamicDeleteBean> getCommentDeleteResult(
            @Query("uid") String uid,
            @Query("id") String id,
            @Query("did") String did
    );

    /**
     * 动态---------删除评论回复
     *
     * @param uid 用户id
     * @param id  回复id
     * @return
     */
    @GET("DynamicsApp/ReplyDel")
    Observable<DynamicDeleteBean> getReplyDeleteResult(
            @Query("uid") String uid,
            @Query("id") String id
    );

    /**
     * 动态----------删除转发评论
     *
     * @param uid
     * @param id
     * @param rid
     * @return
     */
    @GET("RelayApp/CommentDel")
    Observable<DynamicDeleteBean> getRelayCommentDeleteResult(
            @Query("uid") String uid,
            @Query("id") String id,
            @Query("rid") String rid
    );

    /**
     * 动态------------删除转发的评论回复
     *
     * @param uid 用户id
     * @param id  回复id
     * @return
     */
    @GET("RelayApp/ReplyDel")
    Observable<DynamicDeleteBean> getRelayReplyDeleteResult(
            @Query("uid") String uid,
            @Query("id") String id
    );

    /**
     * 动态--------------回复评论
     *
     * @param did
     * @param cid
     * @param form_id
     * @param to_uid
     * @param content
     * @param registration_id
     * @return
     */
    @FormUrlEncoded
    @POST("DynamicsApp/addReply")
    Observable<DynamicAddReplyBean> getDynamicAddReplyResult(
            @Field("did") String did,
            @Field("cid") String cid,
            @Field("form_uid") String form_id,
            @Field("to_uid") String to_uid,
            @Field("content") String content,
            @Field("registration_id") String registration_id
    );

    /**
     * 动态--------------------评论点赞
     *
     * @param uid
     * @param cid
     * @return
     */
    @FormUrlEncoded
    @POST("DynamicsApp/addCommentThing")
    Observable<DynamicPraiseBean> getDynamicCommentPraiseResult(
            @Field("uid") String uid,
            @Field("cid") String cid,
            @Field("to_uid") String to_uid,
            @Field("did") String did
    );

    /**
     * 转发动态-------------评论点赞
     *
     * @param uid
     * @param cid
     * @param did    原动态id
     * @param to_uid
     * @param rid
     * @return
     */
    @FormUrlEncoded
    @POST("RelayApp/addReplyCommentThing")
    Observable<DynamicPraiseBean> getRelayCommentPraiseResult(
            @Field("uid") String uid,
            @Field("cid") String cid,
            @Field("did") String did,
            @Field("to_uid") String to_uid,
            @Field("rid") String rid
    );

    /**
     * 消息通知---------------动态 点赞通知
     *
     * @param uid
     * @param firstRow
     * @param listRows
     * @return
     */
    @GET("Notice/showNoticeRecord")
    Observable<DynamicPraiseNoticeBean> getDynamicPraiseNoticeResult(
            @Query("uid") String uid,
            @Query("firstRow") int firstRow,
            @Query("listRows") int listRows
    );

    /**
     * 消息通知------------动态 评论通知
     *
     * @param uid
     * @param firstRow
     * @param listRows
     * @return
     */
    @GET("Notice/showCommentNoticeRecord")
    Observable<DynamicCommentNoticeBean> getDynamicCommentNoticeResult(
            @Query("uid") String uid,
            @Query("firstRow") int firstRow,
            @Query("listRows") int listRows
    );

    /**
     * 消息通知------------通知数量统计
     *
     * @param uid
     * @return
     */
    @FormUrlEncoded
    @POST("Notice/showMarks")
    Observable<NoticeMarksBean> getNoticeMarksResult(
            @Field("uid") String uid
    );

    /**
     * 消息通知----------消费掉点赞数量
     *
     * @param uid
     * @return
     */
    @FormUrlEncoded
    @POST("Notice/saveThingMarks")
    Observable<ConsumeMarksBean> getConsumeThingMarksResult(
            @Field("uid") String uid
    );

    /**
     * 消息通知------------消费掉评论数量
     *
     * @param uid
     * @return
     */
    @FormUrlEncoded
    @POST("Notice/saveCommentMarks")
    Observable<ConsumeMarksBean> getConsumeCommentMarksResult(
            @Field("uid") String uid
    );

    /**
     * 消息通知--------------消费掉新朋友数量
     *
     * @param uid
     * @return
     */
    @FormUrlEncoded
    @POST("Notice/saveFriendsMarks")
    Observable<ConsumeMarksBean> getConsumeNewFriendMarksResult(
            @Field("uid") String uid
    );

    /**
     * 用户---获取注册结果
     */
    @POST(HttpRequestConstant.REQUEST_SIGN_UP_RESULT)
    Observable<CodeBean> getSignUpResult(@Body RequestBody signUpBody);

    /**
     * 用户---获取注册验证码
     */
    @FormUrlEncoded
    @POST(HttpRequestConstant.REQUEST_SIGN_UP_CODE)
    Observable<CommonBean> getSignUpCode(
            @Field("tel") String email);

    /**
     * 用户---登录获取用户信息
     */
    @FormUrlEncoded
    @POST(HttpRequestConstant.REQUEST_LOGIN_RESULT)
    Observable<LoginBean> getLoginResult(
            @Field("email") String email,
            @Field("pass") String pass
    );

    /**
     * 我的---获取我关注的用户列表
     */
    @GET(HttpRequestConstant.REQUEST_ATTENTION_LIST + "{id}")
    Observable<MyAttentionBean> getMyAttentionResult(
            @Path("id") String email
    );

    /**
     * 我的---获取我粉丝的用户列表
     */
    @GET(HttpRequestConstant.REQUEST_FANS_LIST + "{id}")
    Observable<MyAttentionBean> getMyFansResult(
            @Path("id") String email
    );

    /**
     * 我的---获取我收藏的活动列表
     */
    @FormUrlEncoded
    @POST(HttpRequestConstant.REQUEST_COLLECTION_LIST)
    Observable<MyCollectionBean> getMyCollectionResult(
            @Field("uid") String id
    );

    /**
     * 我的 -> 获取动态列表
     */
    @GET(HttpRequestConstant.REQUEST_DYNAMIC_LIST)
    Observable<DynamicBean> getDynamicsResult(
            @Query("userid") String id,
            @Query("firstRow") int start,
            @Query("listRows") int num,
            @Query("dynamicsId") String dynamicsId,
            @Query("relayId") String relayId
    );

//    /**
//     * 我的 -> 反馈（有图）
//     *
//     * @param uid     用户id
//     * @param content 内容
//     * @param name    用户名
//     * @param sType   反馈类型
//     * @param pic     图片
//     * @return Observable
//     */
//    @Multipart
//    @POST(HttpRequestConstant.REQUEST_FEEDBACK_LIST)
//    Observable<FeedBackBean> getFeedbackResult(
//            @Part("uid") String uid,
//            @Part("content") String content,
//            @Part("name") String name,
//            @Part("s_type") String sType,
//            @Part("pic") File pic
//    );

    /**
     * 我的 -> 反馈（有图）
     */
    @POST(HttpRequestConstant.REQUEST_FEEDBACK_LIST)
    Observable<FeedBackBean> getFeedbackResult(
            @Body RequestBody body
    );

    /**
     * 我的 -> 反馈（无图）
     *
     * @param uid     用户id
     * @param content 内容
     * @param name    用户名
     * @param sType   反馈类型
     * @return Observable
     */
    @FormUrlEncoded
    @POST(HttpRequestConstant.REQUEST_FEEDBACK_LIST)
    Observable<FeedBackBean> getFeedBackWithoutPicResult(
            @Field("uid") String uid,
            @Field("content") String content,
            @Field("name") String name,
            @Field("s_type") String sType
    );

    /**
     * 请求用户个人资料
     *
     * @param uid   用户id
     * @param toUid app_key
     * @return Observable
     */
    @GET(HttpRequestConstant.REQUEST_PERSONAL_INFO + "/{id}")
    Observable<PersonalInfoBean> getPersonalInfoResult(
            @Path("id") String uid,
            @Query("uid") String toUid,
            @Query("app") String app
    );

    /**
     * 请求用户个人资料
     *
     * @param uid 用户id
     * @return Observable
     */
    @FormUrlEncoded
    @POST(HttpRequestConstant.REQUEST_PERSONAL_CARD)
    Observable<PersonalDataCardBean> getPersonalCardInfoResult(
            @Field("id") String uid
    );

    /**
     * 修改用户个人资料信息
     *
     * @param requestBody 用户个人资料
     * @return Observable
     */
    @POST(HttpRequestConstant.REQUEST_UPDATE_PERSONAL_INFO)
    Observable<UpdatePersonalInfoBean> getUpdatePersonalInfoResult(@Body RequestBody requestBody);

    /**
     * 修改用户个人资料信息
     *
     * @param requestBody 用户个人资料
     * @return Observable
     */
    @POST(HttpRequestConstant.REQUEST_UPDATE_AVATAR)
    Observable<UpdatePersonalInfoBean> getUpdateAvatarResult(@Body RequestBody requestBody);

    /**
     * 请求订单信息
     *
     * @param stage    订单状态
     * @param userId   用户id
     * @param lastId   当前页末尾条目id
     * @param pageSize 每页最大请求数量
     * @return Observable
     */
    @FormUrlEncoded
    @POST(HttpRequestConstant.REQUEST_ORDER_INFO)
    Observable<MyOrderBean> getMyOrderInfoResult(
            @Field("stage") int stage,
            @Field("userId") String userId,
            @Field("lastId") String lastId,
            @Field("pageSize") int pageSize);

    /**
     * 获取活动列表信息
     */
    @GET(HttpRequestConstant.REQUEST_ACTIVITY_LIST)
    Observable<ActivitiesPublishBean> getActivitiesPublishResult(
            @Query("uid") String uid,
            @Query("type") String type,
            @Query("firstRow") int star,
            @Query("listRows") int num
    );

    /**
     * 获取个人关注列表
     *
     * @param uid 用户id
     * @return
     */
    @FormUrlEncoded
    @POST(HttpRequestConstant.REQUEST_P_ATTENTION)
    Observable<PersonalAttentionBean> getPersonalAttention(@Field("uid") String uid);

    /**
     * 获取用户的好友列表信息
     *
     * @param uid 用户id
     */
    @FormUrlEncoded
    @POST(HttpRequestConstant.REQUEST_MY_FRIEND)
    Observable<MyFriendListBean> getMyFriendList(@Field("uid") String uid);

    /**
     * 获取修改密码结果
     *
     * @param email    邮箱
     * @param pass     密码
     * @param code   验证码
     * @return 结果
     */
//    @FormUrlEncoded
//    @POST(HttpRequestConstant.REQUEST_EDIT_PASSWORD)
//    Observable<CommonBean> getEditPasswordResult(
//            @Field("email") String email,
//            @Field("pass") String pass,
//            @Query("code") String code
//    );

    /**
     * 获取修改密码结果
     *
     * @param body 请求体
     * @return 结果
     */
    @POST(HttpRequestConstant.REQUEST_EDIT_PASSWORD)
    Observable<CommonBean> getEditPasswordResult(@Body RequestBody body);

    /**
     * 获取验证码
     *
     * @param number 账号
     * @return 结果
     */
    @FormUrlEncoded
    @POST(HttpRequestConstant.GET_SAFE_CODE)
    Observable<CommonBean> getSafeCodeResult(@Field("tel") String number);


    /**
     * 核对验证码
     *
     * @param safeCode 验证码
     * @param email    邮箱
     * @return 结果
     */
    @FormUrlEncoded
    @POST(HttpRequestConstant.CONFIRM_SAFE_CODE)
    Observable<CommonBean> getConfirmCodeResult(@Query("code") String safeCode, @Field("email") String email);

    /**
     * 获取会话列表用户信息
     *
     * @param users 用户id
     * @return 结果
     */
    @FormUrlEncoded
    @POST(HttpRequestConstant.REQUEST_MSG_LIST_USERS_INFO)
    Observable<ListUserBean> getMessageListUsersInfo(
            @Field("uid") String users,
            @Field("gid") String groups
    );

    /**
     * 获取好友请求通知
     *
     * @param uid 用户id
     * @return 结果
     */
    @FormUrlEncoded
    @POST(HttpRequestConstant.REQUEST_NEW_FRIEND_MESSAGE)
    Observable<NewFriendMessageBean> getNewFriendMessage(@Field("uid") String uid);

    /**
     * 获取请求添加好友结果
     *
     * @param fromId  请求方
     * @param toId    接收方
     * @param message
     * @return 结果
     */
    @FormUrlEncoded
    @POST(HttpRequestConstant.REQUEST_ADD_FRIEND)
    Observable<AddFriendsBean> getAddFriendResult(
            @Field("form_uid") String fromId,
            @Field("to_uid") String toId,
            @Field("content") String message,
            @Field("remark") String remark
    );

    /**
     * 获取启动页信息
     *
     * @return 结果
     */
    @GET(HttpRequestConstant.REQUEST_SPLASH_INFO)
    Observable<SplashBean> getSplashInfo();

    /**
     * 拒绝添加好友
     *
     * @param id
     * @param fromId
     * @param toId
     * @return
     */
    @FormUrlEncoded
    @POST(HttpRequestConstant.REQUEST_REFUSE_ADD_FRIEND)
    Observable<CommonBean> getRefuseResult(
            @Field("fid") String id,
            @Field("form_uid") String fromId,
            @Field("to_uid") String toId
    );

    /**
     * 同意添加好友
     *
     * @param id
     * @param fromId
     * @param toId
     * @return
     */
    @FormUrlEncoded
    @POST(HttpRequestConstant.REQUEST_AGREE_ADD_FRIEND)
    Observable<CommonBean> getAgreeRequest(
            @Field("fid") String id,
            @Field("form_uid") String fromId,
            @Field("to_uid") String toId
    );

    /**
     * 判断用户是否关注对方
     *
     * @param fromUid
     * @param toUid
     * @return
     */
    @FormUrlEncoded
    @POST(HttpRequestConstant.REQUEST_IS_FOLLOWED)
    Observable<FollowBean> isFollowed(
            @Field("form_uid") String fromUid,
            @Field("to_uid") String toUid
    );


    /**
     * 获取关注请求的结果
     *
     * @param fromUid 发起者id
     * @param toUid   受关注着id
     * @return 结果
     */
    @FormUrlEncoded
    @POST(HttpRequestConstant.REQUEST_FOLLOW_RESULT)
    Observable<FollowResultBean> getFollowResult(
            @Field("form_uid") String fromUid,
            @Field("to_uid") String toUid
    );

    /**
     * 搜索好友结果
     *
     * @param uid      用户id
     * @param keyWords 关键字
     * @return 结果
     */
    @FormUrlEncoded
    @POST(HttpRequestConstant.REQUEST_FRIEND_RESULT)
    Observable<SearchFriendBean> getSearchFriendResult(
            @Field("uid") String uid,
            @Field("identity") String keyWords
    );

    /**
     * 判断用户是否已经注册
     *
     * @param number 手机号
     * @return 结果
     */
    @FormUrlEncoded
    @POST(HttpRequestConstant.REQUEST_IS_ALREADY_SIGN_UP)
    Observable<CommonBean> isAlreadySignUp(@Field("tel") String number);

    /**
     * 获取提交个人认证资料结果
     *
     * @param requestBody 请求体
     * @return 结果
     */
    @POST(HttpRequestConstant.SUBMIT_P_IDENTIFICATION)
    Observable<ResponseBody> getSubmitIdentificationResult(@Body RequestBody requestBody);

    @POST
    Observable<ResponseBody> requestIdentificationWithBody(@Url String url, @Body RequestBody requestBody);

    /**
     * 获取微信第三方登录回调结果
     *
     * @param get_access_token url
     * @return 结果
     */
    @POST
    Observable<WeChatBean> getWeChatRequestResult(@Url String get_access_token);

    /**
     * 获取微信用户信息
     *
     * @param url url
     * @return 结果
     */
    @POST
    Observable<WeChatUserInfoBean> getWeChatUserInfo(@Url String url);

    /**
     * 获取电子票详情信息
     *
     * @param oid 订单id
     * @return 结果
     */
    @FormUrlEncoded
    @POST(HttpRequestConstant.REQUEST_E_TICKET_INFO)
    Observable<ETicketBean> getETicketInformation(@Field("orders_id") String oid);

    /**
     * 判断第三方登陆用户是否绑定手机号
     *
     * @param unionid 唯一标识
     * @param type    第三方登陆类型
     * @return 结果
     */
    @FormUrlEncoded
    @POST(HttpRequestConstant.REQUEST_IS_BINDING)
    Observable<IsBindingBean> isBinding(@Field("identy") String unionid, @Field("type") String type);

    /**
     * 获取用户认证信息
     *
     * @param uid  用户id
     * @param type 用户认证类型
     * @return 结果
     */
    @FormUrlEncoded
    @POST(HttpRequestConstant.REQUEST_IDENTIFICATION_INFO)
    Observable<IdentificationInfoBean> getIdentificationInfo(@Field("uid") String uid, @Field("type") String type);

    /**
     * 获取绑定结果
     *
     * @return 结果
     */
    @POST(HttpRequestConstant.REQUEST_BIND_TEL)
    Observable<BindingBean> getBindingResult(
            @Body RequestBody body
    );

    /**
     * 获取收藏活动的删除结果
     *
     * @param uid 用户id
     * @param id  活动id
     * @return 结果
     */
    @FormUrlEncoded
    @POST(HttpRequestConstant.REQUEST_DEL_COLLECT)
    Observable<CommonBean> getMyCollectionDelResult(@Field("uid") String uid, @Field("aid") String id);

    /**
     * 取消订单接口
     *
     * @param oid 订单id
     * @return 结果
     */
    @FormUrlEncoded
    @POST(HttpRequestConstant.REQUEST_CANCEL_ORDER)
    Observable<CommonBean> getCancelRequestResult(@Field("order_id") String oid);

    /**
     * 取消订单接口
     *
     * @param oid 订单id
     * @return 结果
     */
    @FormUrlEncoded
    @POST(HttpRequestConstant.REQUEST_DEL_ORDER)
    Observable<OrderDeleteBean> getDelRequestResult(@Field("ordersid") String oid);

    /**
     * 判断是否为好友
     */
    @FormUrlEncoded
    @POST(HttpRequestConstant.REQUEST_IS_FRIEND)
    Observable<CommonBean> isFriend(@Field("form_uid") String fUid, @Field("to_uid") String tUid);

    /**
     * 删除好友
     */
    @FormUrlEncoded
    @POST(HttpRequestConstant.REQUEST_DEL_FRIEND)
    Observable<CommonBean> getDelFriendRequestResult(@Field("form_uid") String fUid, @Field("to_uid") String tUid);

    /**
     * 发布新鲜事
     */
    @FormUrlEncoded
    @POST(HttpRequestConstant.REQUEST_DISCOVERY_PUBLISH)
    Observable<CodeBean> getDiscoveryPublishResult(
            @Field("article") String content,
            @Field("u_id") String uid,
            @Field("title") String title,
            @Field("cover") String freshCover);

    /**
     * 上传图片
     */
    @POST(HttpRequestConstant.REQUEST_IMG_UPLOAD)
    Observable<ResponseBody> getUploadImgResult(@Body RequestBody body);

    /**
     * 发布活动
     *
     * @param strech      活动名称（主题）
     * @param tid         活动类型id
     * @param uid         活动发布人id
     * @param sponsor     活动主办方
     * @param action_time 活动开始时间
     * @param exit_time   活动结束时间
     * @param location    活动位置
     * @param lessons     活动简介
     * @param cover       活动宣传封面
     * @param content     活动详情
     * @param contact     活动联系人
     * @param tel         联系人电话
     * @param much        票价
     * @param count       票数
     * @return
     */
    @FormUrlEncoded
    @POST("ActiveApp/add")
    Observable<CodeBean> getActivePublishResult(
            @Field("strech") String strech,
            @Field("tid") int tid,
            @Field("uid") int uid,
            @Field("sponsor") String sponsor,
            @Field("action_time") String action_time,
            @Field("exit_time") String exit_time,
            @Field("location") String location,
            @Field("lessons") String lessons,
            @Field("cover") String cover,
            @Field("content") String content,
            @Field("contact") String contact,
            @Field("tel") String tel,
            @Field("much") float much,
            @Field("count") int count,
            @Field("create_time") String create_time,
            @Field("is_three") int is_url,
            @Field("three_url") String three_url
    );

    /**
     * 上传活动图片
     *
     * @param body
     * @return
     */
    @POST("ActiveApp/add_active")
    Observable<ResponseBody> getUploadActiveImgResult(@Body RequestBody body);

    /**
     * 创建群聊
     *
     * @param uid         用户id
     * @param groupName   群组名称
     * @param groupDesc   群简介
     * @param groupNotice 群公告
     * @param members     群成员
     * @return 结果
     */
    @FormUrlEncoded
    @POST(HttpRequestConstant.REQUEST_CREATE_GROUP)
    Observable<CreateGroupBean> getCreateGroupRequestResponse(
            @Field("uid") String uid,
            @Field("groupName") String groupName,
            @Field("groupDesc") String groupDesc,
            @Field("groupNotice") String groupNotice,
            @Field("members") String members);

    /**
     * 初始化邀请群成员
     *
     * @param uid     群主id
     * @param members 群成员id
     * @param id      服务器端群id
     * @param groupId 环信端群id
     * @return 邀请结果
     */
    @FormUrlEncoded
    @POST(HttpRequestConstant.REQUEST_INVITE_MEMBER)
    Observable<CodeBean> getInviteMembersRequestResponse(
            @Field("form_uid") String uid,
            @Field("to_uid") StringBuilder members,
            @Field("gid") String id,
            @Field("easemobGid") String groupId
    );

    /**
     * 获取我的群列表
     *
     * @param uid 用户id
     * @return 群列表信息
     */
    @FormUrlEncoded
    @POST(HttpRequestConstant.REQUEST_MY_GROUPS_INFO)
    Observable<MyGroupsBean> getMyGroupsRequestResponse(@Field("uid") String uid);

    /**
     * 获取群资料
     *
     * @param uid 用户id
     * @param gid 群组id
     * @return 群资料
     */
    @FormUrlEncoded
    @POST(HttpRequestConstant.REQUEST_GROUPS_DETAILS)
    Observable<GroupDetailsBean> getGroupDetailsRequestResponse(
            @Field("uid") String uid,
            @Field("gid") String gid
    );

    /**
     * 修改群资料信息
     *
     * @param uid         用户id
     * @param gid         群组id
     * @param groupId     环信群组id
     * @param groupName   群名称
     * @param groupDesc   群描述
     * @param groupNotice 群公告
     * @return 修改结果
     */
    @FormUrlEncoded
    @POST(HttpRequestConstant.REQUEST_EDIT_GROUP_INFO)
    Observable<CommonBean> getEditGroupInfoRequestResponse(
            @Field("uid") String uid,
            @Field("gid") String gid,
            @Field("groupId") String groupId,
            @Field("groupName") String groupName,
            @Field("groupDesc") String groupDesc,
            @Field("groupNotice") String groupNotice
    );

    /**
     * 获取添加成员结果
     *
     * @param gid     群id
     * @param easeGid 环信群id
     * @param fId     群主id
     * @param tId     受邀人id
     * @param isOwner 是否是群主
     * @return 添加结果
     */
    @FormUrlEncoded
    @POST(HttpRequestConstant.REQUEST_GROUP_ADD_MEMBERS)
    Observable<CodeBean> getGroupAddMembersRequestResponse(
            @Field("gid") String gid,
            @Field("easemobGid") String easeGid,
            @Field("form_uid") String fId,
            @Field("to_uid") String tId,
            @Field("isOwner") String isOwner);

    /**
     * 删除群成员
     *
     * @param uid     群主id
     * @param toUid   用户id
     * @param gid     群组id
     * @param groupId 群组id
     * @return 结果
     */
    @FormUrlEncoded
    @POST(HttpRequestConstant.REQUEST_GROUP_DEL_MEMBERS)
    Observable<CodeBean> getGroupDelMembersRequestResponse(
            @Field("uid") String uid,
            @Field("to_uid") String toUid,
            @Field("gid") String gid,
            @Field("groupId") String groupId);

    /**
     * 群主解散群
     *
     * @param uid     群主id
     * @param id      群id
     * @param groupId 群id
     * @return 结果
     */
    @FormUrlEncoded
    @POST(HttpRequestConstant.REQUEST_DISMISS_GROUP)
    Observable<CodeBean> getDismissGroupResult(
            @Field("uid") String uid,
            @Field("gid") String id,
            @Field("groupId") String groupId
    );

    /**
     * 退出群
     *
     * @param uid 用户id
     * @param id  群id
     * @return 结果
     */
    @FormUrlEncoded
    @POST(HttpRequestConstant.REQUEST_QUIT_GROUP)
    Observable<CodeBean> getQuitGroupResult(
            @Field("uid") String uid,
            @Field("gid") String id,
            @Field("groupId") String groupId
    );

    /**
     * 修改群成员是否可邀请好友权限
     *
     * @param uid 群主id
     * @param gid 群组id
     * @return 结果
     */
    @FormUrlEncoded
    @POST(HttpRequestConstant.REQUEST_EDIT_INVITED_ROOT)
    Observable<CodeBean> getEditInvitedRootResult(
            @Field("uid") String uid,
            @Field("gid") String gid
    );

    /**
     * 获取上传群头像结果
     *
     * @param requestBody 头像
     * @return 结果
     */
    @POST(HttpRequestConstant.REQUEST_UPDATE_GROUP_AVATAR)
    Observable<CodeBean> getUpdateGroupAvatarResult(@Body RequestBody requestBody);

    /**
     * 获取服务器版本信息
     *
     * @return 版本信息
     */
    @POST(HttpRequestConstant.REQUEST_VERSION_INFO)
    Observable<VersionInfoBean> getVersionInfo();

    /**
     * 获取我的新鲜事
     *
     * @param uid 用户id
     * @return 新鲜事
     */
    @FormUrlEncoded
    @POST(HttpRequestConstant.REQUEST_GET_MY_DISCOVERIES)
    Observable<MyDiscoveryBean> getMyDiscoveriesRequestResponse(@Field("uid") String uid);

    /**
     * 获取我的新鲜事
     *
     * @param id 新鲜事id
     * @return 结果
     */
    @FormUrlEncoded
    @POST(HttpRequestConstant.REQUEST_DEL_MY_DISCOVERIES)
    Observable<CodeBean> getDelMyDiscoveriesRequestResponse(@Field("id") String id);

    @GET(HttpRequestConstant.REQUEST_DEL_MY_DISCOVERIES)
    Observable<RecommendActivityInfoBean> getRecommendActivityInfo();

    /**
     * 获取首页内容
     *
     * @param id
     * @return
     */
    @FormUrlEncoded
    @POST("IndexApp/showIndex")
    Observable<HomeBean> getHomeContent(
            @Field("id") String id
    );

    /**
     * 首页上拉加载列表
     *
     * @param page
     * @return
     */
    @FormUrlEncoded
    @POST("IndexApp/pullIndexList")
    Observable<HomeBean> getHomeList(
            @Field("page") int page
    );

    /**
     * 首页上方搜索
     *
     * @param title  关键字
     * @param typeId 搜索类型
     * @return 搜索结果数据
     */
    @FormUrlEncoded
    @POST(HttpRequestConstant.INDEX_SEARCH)
    Observable<IndexSearchListBean> getSearchResult(
            @Field("contents") String title,
            @Field("type_id") int typeId
    );

    /**
     * 获取兴趣数据
     *
     * @param body 请求体
     * @return 结果
     */
    @POST(HttpRequestConstant.REQUEST_INTEREST_INFO)
    Observable<InterestBean> getInterestInfo(@Body RequestBody body);

    /**
     * 顶踩操作
     *
     * @param body 请求体
     * @return 请求结果
     */
    @POST(HttpRequestConstant.REQUEST_INTEREST_PRISE)
    Observable<CodeBean> getPriseResult(@Body RequestBody body);

    /**
     * 兴趣视频举报
     *
     * @param body 请求体
     * @return 请求结果
     */
    @POST(HttpRequestConstant.REQUEST_INTEREST_REPORT)
    Observable<CodeBean> getReportResult(@Body RequestBody body);

    /**
     * 获取动态的全部信息
     *
     * @param uid      用户id
     * @param firstRow 请求的其实item位置
     * @param listRows page size
     * @return 结果
     */
    @GET(HttpRequestConstant.REQUEST_DYNAMIC_ALL_MSG)
    Observable<DynamicAllMessageBean> getDynamicAllMessage(
            @Query("uid") String uid,
            @Query("firstRow") int firstRow,
            @Query("listRows") int listRows
    );

    /**
     * 兴趣视频上传
     *
     * @param body 请求体
     * @return 请求结果
     */
    @POST(HttpRequestConstant.REQUEST_INTEREST_V_SUBMIT)
    Observable<CodeBean> getInterestSubmitResult(@Body RequestBody body);

    /**
     * 获取兴趣分类列表
     *
     * @return 请求结果
     */
    @GET(HttpRequestConstant.REQUEST_INTEREST_CATEGORIES)
    Observable<InterestCategoriesBean> getInterestCategories();

    /**
     * 获取视频详情
     *
     * @param body 请求体
     * @return 请求结果
     */
    @POST(HttpRequestConstant.REQUEST_INTEREST_V_DETAIL)
    Observable<InterestVideoDetailBean> getInterestDetail(@Body RequestBody body);

    /**
     * 发布视频评论
     *
     * @param body 请求体
     * @return 请求结果
     */
    @POST(REQUEST_INTEREST_ADD_REPLY)
    Observable<CodeBean> getAddVideoReplyResult(@Body RequestBody body);

    /**
     * 视频评论点赞
     *
     * @param body 请求体
     * @return 请求结果
     */
    @POST(HttpRequestConstant.REQUEST_VIDEO_REPLY_PRAISE)
    Observable<CodeBean> getReplyPriseResult(@Body RequestBody body);

    /**
     * 判断当前用户的登陆状态是否为406
     *
     * @param uid 当前缓存中的用户id
     * @return 结果
     */
    @FormUrlEncoded
    @POST(HttpRequestConstant.REQUEST_LOGIN_STATE)
    Observable<CodeBean> getLoginState(@Field("uid") String uid);

    /**
     * 获取我的视频列表
     *
     * @param body 请求体
     * @return 结果
     */
    @POST(HttpRequestConstant.REQUEST_MY_VIDEO)
    Observable<MyInterestVideoBean> getMyVideoContent(@Body RequestBody body);

    /**
     * 删除我的兴趣中的视频
     *
     * @param body 请求体
     * @return 结果
     */
    @POST(HttpRequestConstant.REQUEST_MY_VIDEO_DEL)
    Observable<CodeBean> getMyVideoDeleteResult(@Body RequestBody body);

    /**
     * 删除我的评论
     *
     * @param body
     * @return
     */
    @POST(HttpRequestConstant.REQUEST_VIDEO_REPLY_DEL)
    Observable<CodeBean> deleteVideoReplyResult(@Body RequestBody body);

    /**
     * 获取投稿数据
     *
     * @param body 请求体
     * @return 结果
     */
    @POST(HttpRequestConstant.REQUEST_PERSONAL_PUBLISH)
    Observable<PersonalPublishBean> getPersonalPublish(@Body RequestBody body);

    /**
     * 删除我的活动
     *
     * @param id 活动id
     * @return 结果
     */
    @FormUrlEncoded
    @POST(HttpRequestConstant.REQUEST_DELETE_MY_ACTIVITY)
    Observable<CodeBean> getDelMyActivityRequestResponse(@Field("id") String id);

    /**
     * 兴趣添加回复
     *
     * @param body 请求体
     * @return 结果
     */
    @POST(HttpRequestConstant.REQUEST_ADD_COMMENT_REPLY)
    Observable<CodeBean> addCommentReply(@Body RequestBody body);

    /**
     * 兴趣回复的点赞
     *
     * @param body 请求体
     * @return 结果
     */
    @POST(HttpRequestConstant.REQUEST_PRAISE_COMMENT_REPLY)
    Observable<CodeBean> getCommentReplyPriseResult(@Body RequestBody body);

    /**
     * 获取我的审核列表数据
     *
     * @param body 请求体
     * @return 结果
     */
    @POST(HttpRequestConstant.REQUEST_PERSONAL_AUDIT)
    Observable<PersonalAuditBean> getPersonalAuditData(@Body RequestBody body);

    /**
     * 请求获取个人认证状态
     *
     * @param uid 用户id
     * @return 结果
     */
    @FormUrlEncoded
    @POST(HttpRequestConstant.REQUEST_IDENTIFY_STATUS)
    Observable<IdentificationStatusBean> getIdentificationStatus(@Field("uid") String uid);

    /**
     * 请求订单信息
     *
     * @param body 请求体
     * @return 结果
     */
    @POST(HttpRequestConstant.REQUEST_ORDER_DATA)
    Observable<MineOrderDataBean> getOrderDataBean(@Body RequestBody body);

    /**
     * 延长收货
     *
     * @param body 请求体
     * @return code
     */
    @POST(HttpRequestConstant.REQUEST_ORDER_EXTENT)
    Observable<OrderExtendTransportBean> getOrderExtendTransportBean(@Body RequestBody body);

    /**
     * 删除订单
     *
     * @param body 请求体
     * @return code
     */
    @POST(HttpRequestConstant.REQUEST_ORDER_DELETE)
    Observable<OrderDeleteBean> getOrderDeleteBean(@Body RequestBody body);

    /**
     * 请求订单物流信息
     *
     * @param body 物流信息列表
     * @return 结果
     */
    @POST(HttpRequestConstant.REQUEST_ORDER_TRANSPORT_DATA)
    Observable<OrderTransportDataBean> getOrderTransportDataBean(@Body RequestBody body);

    /**
     * 请求用户地址信息
     *
     * @param body 用户地址信息列表
     * @return 用户地址信息列表
     */
    @POST(HttpRequestConstant.REQUEST_ORDER_USER_ADDRESS_DATA)
    Observable<OrderUserAddressDataBean> getOrderUserAddressDataBean(@Body RequestBody body);

    /**
     * 获取修改用户默认地址信息返回值
     *
     * @param body 用户默认地址信息返回值
     * @return 用户默认地址信息返回值
     */
    @POST(HttpRequestConstant.REQUEST_ORDER_USER_ADDRESS_DEFAULT_DATA)
    Observable<OrderUserAddressDefaultDataBean> getOrderUserAddressDefaultDataBean(@Body RequestBody body);

    /**
     * 获取删除用户地址信息返回值
     *
     * @param body 获取删除用户地址信息返回值
     * @return 获取删除用户地址信息返回值
     */
    @POST(HttpRequestConstant.REQUEST_ORDER_USER_ADDRESS_DELETE_DATA)
    Observable<OrderUserAddressDeleteDataBean> getOrderUserAddressDeleteDataBean(@Body RequestBody body);

    /**
     * 获取用户添加或修改地址返回值
     *
     * @param body 获取用户添加或修改地址返回值
     * @return 获取用户添加或修改地址返回值
     */
    @POST(HttpRequestConstant.REQUEST_ORDER_USER_ADDRESS_EDIT_DATA)
    Observable<OrderUserAddressEditDataBean> getOrderUserAddressEditDataBean(@Body RequestBody body);

    /**
     * 添加订单评论返回值
     *
     * @param body 添加订单评论返回值
     * @return 添加订单评论返回值
     */
    @POST(HttpRequestConstant.REQUEST_ORDER_COMMENT_DATA)
    Observable<OrderCommentDataBean> setOrderCommentDataBean(@Body RequestBody body);

    /**
     * 申请售后返回订单信息
     *
     * @param body 订单信息
     * @return 订单信息
     */
    @POST(HttpRequestConstant.REQUEST_ORDER_APPLY_AFTER_SALE)
    Observable<OrderApplyAfterSaleBean> getOrderApplyAfterSaleDataBean(@Body RequestBody body);

    /**
     * 获取申请售后上传货物信息返回值
     *
     * @param body 返回值
     * @return 返回值
     */
    @POST(HttpRequestConstant.REQUEST_ORDER_APPLY_AFTER_SALE_POST)
    Observable<OrderApplyAfterSalePostDataBean> postOrderApplyAfterSaleDataBean(@Body RequestBody body);

    /**
     * 请求退货状态信息
     *
     * @param body 退货状态信息
     * @return 退货状态信息
     */
    @POST(HttpRequestConstant.REQUEST_ORDER_REFUND_STATE)
    Observable<OrderRefundStateDataBean> getOrderRefundStateDataBean(@Body RequestBody body);

    /**
     * 获取取消售后返回码
     *
     * @param body 取消售后
     * @return code
     */
    @POST(HttpRequestConstant.REQUEST_ORDER_CANCEL_CODE)
    Observable<OrderRefundCancelBean> getOrderRefundCancelDataBean(@Body RequestBody body);

    /**
     * 发送极光推送
     *
     * @param status 状态（评论、点赞）
     * @param uid    tag别名（用户id）
     * @param id     推送id
     * @param type   类型 用于接收端判断
     */
    @FormUrlEncoded
    @POST("Comment/addJpush")
    Observable<DynamicDeleteBean> getPushResult(
            @Field("status") String status,
            @Field("tag") int uid,
            @Field("id") int id,
            @Field("type") String type
    );

    /**
     * 通用举报
     *
     * @param body 将form表单与图片文件添加到请求体中
     */
    @POST("Report/addReport")
    Observable<ReportResultBean> getRepotResult(
            @Body RequestBody body
    );

    /**
     * 全局搜索获取热搜词和分类接口
     *
     * @return 热搜词和分类
     */
    @POST(HttpRequestConstant.REQUEST_HOT_SEARCH)
    Observable<TopSearchAndClassificationBean> getTopSearchAndClassification();

    /**
     * 提交免费活动报名信息
     *
     * @param body 请求体
     * @return 活动报名结果
     */
    @POST(HttpRequestConstant.REQUEST_SUBMIT_FREE_TICKET_INFO)
    Observable<ActivitiesApplyForResultBean> getSubmitForFreeTicketResult(@Body RequestBody body);
}